package com.yuw.net.tcpdemo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientThread extends Thread {
	// 属性

	// 行为

	@Override
	public void run() {
		try {
			// 创建一个客户端Socket
			// ip地址串是服务器的ip地址，127.0.0.1 表示当前主机，等价于 localhost
			Socket socket = new Socket("10.96.98.125", 9011);
			/////////////// 客户端发送消息 开始/////////////////////
			// 发送消息使用 ouputstream输出流
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "utf-8"));
			String strClientMsg = "hello,server,this is client...";
			// 向服务器写出内容
			bw.write(strClientMsg);
			// 写一个行结束符
			bw.newLine();
			// 还可以发送其他消息
			bw.write("1231231312312 \n");
			// 客户端可以输入多行内容
			// 通信结束的标识：客户端发送 "eof" 表示内发送结束
			bw.write("eof");
			bw.write("\n");
			// 清空
			bw.flush();
			System.out.println("客户端发送消息：" + strClientMsg);

			/////////////// 客户端发送消息 结束/////////////////////

			/////////////// 客户端端接收消息 开始/////////////////////
			// 获取输入流对象
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8"));

			// 读取服务器发送的消息
			String strServerMsg = br.readLine();
			while (strServerMsg != null && !strServerMsg.equalsIgnoreCase("eof")) {
				System.out.println("客户端接收消息：" + strServerMsg);
				// 继续读取后续内容直到结束位置
				strServerMsg = br.readLine();
			}
			/////////////// 客户端端接收消息 结束/////////////////////

			// 关闭资源
			socket.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
